import { reqGoodsInfo, reqAddOrUpdateShopCart } from "@/api"
// 封装游客身份模块uuid 生成一个随机字符串(不能再变)
import {getUUID} from '@/utils/uuid_token'

// detail 模块的小仓库
export default ({
    // 仓库存储数据的地方
    state: {
        goodInfo: {},
        // 游客临时身份        
        uuid_token: getUUID()
    },
    // 唯一修改state的地方
    mutations: {
        GETGOODINFO(state, goodInfo) {
            state.goodInfo = goodInfo;
        }
    },
    // 可以书写业务逻辑 也可以处理异步
    actions: {
        // 获取产品信息的action
        async getGoodInfo({commit}, skuId) {
            let result = await reqGoodsInfo(skuId);
            if(result.code == 200) {
                commit("GETGOODINFO", result.data);
            } 
        },
        async addOrUpdateShopCart({commit}, {skuId, skuNum}) {
            // 服务器写入数据成功 没有返回其余数据 因此不需要三连环存储数据
            let result = await reqAddOrUpdateShopCart(skuId, skuNum);
            // console.log(result);
            // 服务器加入购物车成功
            if(result.code == 200) {
                return "ok"
            }else {
                // 加入购物车失败
                return Promise.reject(new Error('faile'));
            }
        }
    },
    // 简化数据
    getters: {
        // 路径导航简化的数据
        categoryView(state) {
            // state.goodInfo初始为空对象 空对象的categoryView属性值为undefined
            return state.goodInfo.categoryView || {};
        },
        // 简化产品信息的数据
        skuInfo(state) {
            return state.goodInfo.skuInfo || {};
        },
        // 产品售卖属性的简化
        spuSaleAttrList(state) {
            return state.goodInfo.spuSaleAttrList || [];
        }
    }
})